WindowsPC開発用の初期設定~AWS CLIインストールまで~
DA事業本部コンサルティングチームのnkhrです。入社して新しいPCの設定を行ったので、手順を公開します。
Windowsでの開発環境設定は、Microsoft公式ドキュメントに役割ごとの開発環境マニュアルがあるので参考になると思います。
このブログでは以下の設定を記載しています。
- Windows Terminal設定
- PowerShell7のインストール
- TerminalでのPowerShellの外観カスタマイズ (PowerLineの設定)
- WSL (Ubuntu)のインストール
- Pipenvの設定 (Pythonのパッケージ管理・仮想環境管理ライブラリ)
- vim for windowsのインストール
- AWS CLIのインストールと設定
Windows Terminalの設定
バージョン: 1.10.2383.0 (※バージョンが異なる場合、GUI設定画面で操作できる内容に違いがある)
Microsoft Storeからインストールする。デフォルトでは、cmdプロンプト、PowerShell、Azure Cloud Shellが利用できる。
外観(フォントや文字の大きさ)、起動パラメータなどの基本的な設定はGUIインタフェースが提供される。詳細を設定する場合は「settings.json」を修正する。
settings.jsonの起動方法
PowerShellのバージョンアップ
Windows10のデフォルトPowerShellは、Version5である。最新のViersion7をインストールしようと思います。
PowerShellのバージョン確認コマンド
❯ $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 1 19041 1237
最新バージョンをインストール
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
iex
Invoke-Expressionのエリアス。ローカルコンピュータ上で文字列を実行&
CALL演算子として利用される場合は、後に続く文字列または、スクリプトブロックを実行irm
Invoke-RestMethodのエリアス。HTTP/HTTPSリクエストを送り、結果取得-UseMSI
PSファイルのコマンド引数。MSIパッケージによるインストールを指定。指定なしの場合はZipパッケージを利用。
コマンド実行後に、インストーラが自動で立ち上がる。インストール後にWindows Terminalを再起動するとPowerShell7の設定が追加されている。
Windows Terminalの基本設定
- Windows Terminalの「全般」から、「名前」を「PowerShell7」に変更
- 左のツールバーの一番上の「スタートアップ」設定で「既存のプロファイル」を「PowerShell7」に変更
> $PSVersionTable.PSVersion Major Minor Patch PreReleaseLabel BuildLabel ----- ----- ----- --------------- ---------- 7 1 4
PowerShellのTerminal外観カスタマイズ
公式サイトの「チュートリアル: Windows ターミナルで Powerline をセットアップする」を参考に、PowerShellのTerminalにPowerlineを追加する。
PowerShell(version5)でスクリプト実行の許可
PowerShell(version5)の初期設定では、スクリプト(PSファイル)実行が制限されている。
※PowerShell(version7)の場合は、ローカルコンピュータのスクリプトは実行可能(実行ポリシー:RemoteSigned)なため、この手順は実施不要。
下記のコマンドで「Restricted」と表示される場合は、PSファイルの実行がすべて制限されている。実行ポリシーに「RemoteSigned」を選択することで、ローカルコンピュータで作成したPSファイルおよび、他のユーザが作成した署名付きPSファイルが実行可能となる。
※Get-ExecutionPolicyコマンドはリンク先参照。
> Get-ExecutionPolicy Restricted > Get-ExecutionPolicy -List # 実行ポリシーは以下のScopeで設定可能。 # 全部Undefinedの場合はWindows ClientではRestricted, Windows ServerではRemoteSignedになる Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined # 現在のPowerShellセッションのみ有効 CurrentUser Undefined # Policyを設定したユーザのみ有効 LocalMachine Undefined # ローカルマシンの全ユーザに有効
- 一時的に許可する場合のコマンド
> Set-ExecutionPolicy RemoteSigned -Scope Process
- Terminal起動時に実行ポリシーを許可するためのWindows Terminal設定
PowerLineのインストール
※Powershell7の場合は、この手順から実行
(2022/05追記)現在は、Install-Moduleからoh-my-poshのインストールに対応しなくなっため公式サイトを参考に、wingetでインストールする。
新しい設定方法
> Install-Module posh-git -Scope CurrentUser > winget install oh-my-posh > notepad $PROFILE 下記の2行を末尾に追加 Import-Module posh-git oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\paradox.omp.json" | Invoke-Expression
以前の設定方法
> Install-Module posh-git -Scope CurrentUser > Install-Module oh-my-posh -Scope CurrentUser # Windows7はPowerShell Coreを使用しているため下記のコマンドも実行(Powershell5では不要) # 2021/10時点では-AllowPrereleaseを指定したbata版でない場合はSystemのPSReadLineのバージョンと # 競合してインストールできないため、正式リリースまでスキップしてもよいかもしれない。 > Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease > notepad $PROFILE 下記の3行を末尾に追加 Import-Module posh-git Import-Module oh-my-posh Set-PoshPrompt -Theme Paradox
- NuGetをインストールしていない場合は、Install-Moduleの実行時にインストールが必要。
- PowerShellでは、デフォルトではPSGalleryを信頼できるリポジトリに含めていないため、信頼確認が発生。PS Galleryについては、リンク先を参照
Cascadia Fontsの設定
このフォント設定を設定することにより、PowerLineの文字化けが解消する。
- GitHubのcascadia-codeのサイトからZipファイルをダウンロード。解凍後にtffファイルを右クリックしインストール。
- 設定画面の「外観>フォントフェイス」に「Cascadia Code PL」が追加されているので、選択。
見た目はこんな感じ↓
WSL (Ubuntu)の設定
WindowsにUbuntuをインストールする。PowerShellで実行したコマンドを共有する。
詳細は、公式インストール手順および、公式ユーザ設定手順を参照。
# Microsoft Storeからダウンロード可能なディストリビューション一覧を表示 > wsl --list --online # ディストリビューションを指定してインストール。「-d <Name>」で指定 > wsl --install -d Ubuntu # パスワードを忘れた場合はPowerShellから以下のコマンドでrootユーザでログインし変更を行う > wsl -d <distribution-name> -u root
Ubuntuの設定
# 更新 $ sudo apt update && sudo apt upgrade # GoとPowerline-Goを設定 $ sudo apt install golang-go $ go get -u github.com/justjanne/powerline-go # .bashrcに設定を追加 vim ~/.bashrc ---- GOPATH=$HOME/go function _update_ps1() { PS1="$($GOPATH/bin/powerline-go -error $?)" } if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND" fi ----
Pipenvの設定
pipenvは、python仮想実行環境の構築・管理 (Python3では標準のvenvコマンドで代替可能)とパッケージ管理 (pip)の機能が合わさったツールである。
Python本体は、Microsoft Storeからインストールして、環境変数に追加するPYTHON_HOMEでシステムバージョンを切り替える設定とする。
pipenvのインストールと設定
仮想環境と仮想環境にインストールするパッケージは、pipenvを使って管理する。
# インストール > pip install pipenv # 仮想環境の起動コマンド一覧 > pipenv install # PipfileやPipfile.Lockが存在する場合に、ファイルを元に仮想環境を起動 $ pipenv run python # 仮想環境を利用してpythonインタプリタを起動する $ pipenv runn sample.py # 指定したpythonファイルを実行する $ pipenv shell # 仮想環境を利用したシェルを起動する
環境変数の設定
- PIPENV_HOME
C:\Users\[username]\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_[unique_id]\LocalCache\local-packages\Python39\Scripts
- 作成した環境変数をPATHに追加する
- PIPENV_VENV_IN_PROJECT=true
- 仮想環境のフォルダを実行プロジェクト配下に作成する設定((デフォルトは~/.venv配下に作成される)
Vimのインストール
公式サイトからインストーラを取得し、vim.exeがあるフォルダを環境変数Pathに追加することで、Windows TerminalのPowerShellやCmdプロンプトからvimコマンドが実行できる。
削除と移動のキー操作程度を覚えておくだけで、Terminal上でのちょっとした修正が早くなると思う。Windowsでの開発はVS Codeが便利。AWSインフラコードの開発やAPIの開発はVS Codeを使うのがよいと思う。
vim設定(buckup/undoファイルの作成を無効化)
set nobackup "backupファイル無効化 set noundofile "undoファイル無効化 set number "行番号を表示
vimrcファイル内のコメントは先頭に「"」をつける。
backupファイル(チルダ~がついたファイル)と、UNDOファイル(~unがついたファイル)は無効化するが、swapファイルは編集後に自動で削除されるので、無効にしない。
AWS CLI設定
AWS CLIのインストール
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-windows.html
設定ファイルの作成
AWS CLIでは以下の2つのファイルを設定する。
.aws/credentials
: 認証情報を記載.aws/config
: CLIの設定情報を記載
実行コマンドは以下の通り。 - PowerShell実行コマンド
cd env:USERPROFILE mkdir .aws vim .aws/credentials --> credentialsファイルの作成(内容は後述) vim .aws/config --> configファイルの作成
- .aws/credentialsファイル内容
[name1] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_ACCESS_KEY
-
.aws/configファイル内容
[profile name1] output = yaml region = ap-northeast-1 [profile name2] output = json region = ap-northeast-1 role_arn = arn:aws:iam::<AWS-ACCOUNT-ID>:role/<role-name> mfa_serial = <name1のMFA設定がある場合にスイッチロール先の設定に必要> source_profile = name1
スイッチロール前提のプロファイル設定です。profile name1
がスイッチロール元、profile name2
がスイッチロール先のアカウントです。
mfa_serialの設定については以下のブロクに詳しく記載されています。
まとめ
今回は入社後の開発環境設定について書きました。